package bridge;

/**
 * @author ycc
 * @date 2024/4/2
 * 在客户端代码中使用Abstraction类来创建具体的形状和颜色组合
 * 我们使用桥接模式将形状和颜色分离，使得它们可以独立地变化。
 * 这样，如果我们需要添加新的形状或颜色，只需要创建新的实现类即可，而不需要修改现有的代码
 */
public class BridgePatternDemo {
    public static void main(String[] args) {
        Abstraction redCircle = new Abstraction(new Circle(), new Red()) {
            @Override
            public void draw() {
                System.out.print(color.getColor() + " ");
                shape.draw();
            }
        };

        Abstraction greenSquare = new Abstraction(new Square(), new Green()) {
            @Override
            public void draw() {
                System.out.print(color.getColor() + " ");
                shape.draw();
            }
        };

        redCircle.draw();
        greenSquare.draw();
    }
}
